/**
 * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
 * 
 * 项目名：	cards-web
 * 文件名：	AuthorizerAccessTokenStorage.java
 * 模块说明：	
 * 修改历史：
 * 2017年5月25日 - Debenson - 创建。
 */
package com.alex.wechat.component.config;

/**
 * 用来存储第三方开发平台的授权凭证
 * 
 * @author Debenson
 * @since 0.1
 */
public interface AuthorizerAccessTokenStorage {

  /**
   * 取得第三方开放平台调用凭据（authorizer_access_token）
   * 
   * @return
   */
  String getAuthorizerAccessToken();

  /**
   * 第三方开放平台调用凭据（authorizer_access_token）是否过期
   * 
   * @param appId
   *          小程序或公众号的appid
   * @return
   */
  boolean isAuthorizerAccessTokenExpired();

  /**
   * 强制将第三方开放平台调用凭据（authorizer_access_token）过期掉
   * 
   * <br>
   * 需要根据appId找到小程序或公众号的配置，然后设置相应值 。
   * 
   * @param appId
   *          小程序或公众号的appid
   */
  void expireAuthorizerAccessToken();

  /**
   * 更新第三方开放平台调用凭据（authorizer_access_token）和过期时间
   * 
   * <br>
   * 需要根据appId找到小程序或公众号的配置，然后设置相应值 。
   * 
   * @param appId
   *          小程序或公众号的appid
   * @param token
   *          调用凭据
   * @param expiresInSeconds
   *          过期时间
   */
  void updateAuthorizerAccessToken(String token, int expiresInSeconds);

  /**
   * 更新第三方开放平台调用凭据（authorizer_access_token）、过期时间和接口调用凭据刷新令牌
   * 
   * <br>
   * 需要根据appId找到小程序或公众号的配置，然后设置相应值 。
   * 
   * @param appId
   *          小程序或公众号的appid
   * @param token
   *          调用凭据
   * @param expiresInSeconds
   *          过期时间
   * @param authorizerRefreshToken
   *          接口调用凭据刷新令牌
   */
  void updateAuthorizerAccessToken(String token, int expiresInSeconds,
      String authorizerRefreshToken);

  /**
   * 取得接口调用凭据刷新令牌
   * 
   * @param appId
   *          小程序或公众号的appid
   * @return 接口调用凭据刷新令牌
   */
  String getAuthorizerRefreshToken();

}
